Telegram Group & Telegram Channel
⌨️ Как адаптировать код под синтаксические изменения в Python 3.14

Python 3.14 планируется к релизу 7 октября 2025 года. В нем будут представлены значительные улучшения производительности, включая новый экспериментальный интерпретатор и оптимизацию различных встроенных модулей.

Кроме того, Python 3.14 вводит несколько изменений синтаксиса, которые важно учитывать разработчикам:

1⃣ Запрещены операторы управления потоком в блоках `finally`

Сейчас разработчики могут по ошибке использовать операторы управления потоком (такие как return, break или continue) в блоках finally, что может привести к неожиданному поведению. В Python 3.14 будет выводиться SyntaxWarning при наличии таких операторов в блоках finally.

Пример:
def return_example():
try:
print("В блоке try")
return "Возврат из блока try"
except Exception as e:
print(f"Ошибка: {e}")
finally:
print("В блоке finally")
return "Возврат из блока finally" # Перекрывает возврат из try

result = return_example()
print(f"Результат: {result}")


Вывод:
В блоке try
В блоке finally
Результат: Возврат из блока finally


Это изменение поможет избежать ошибок, когда контрольный поток блока finally перезаписывает поток из блоков try/except.

2⃣ Обработка исключений без скобок

В Python 3.14 больше не требуется использовать скобки при перехвате нескольких исключений. Это упрощает код, но скобки всё равно необходимы, если вы используете конструкцию as для захвата экземпляра исключения.

Пример:
def divide(a, b):
try:
result = a / b
return result
except ZeroDivisionError, TypeError: # Обработка без скобок
print(f"Неправильный ввод: {a} и {b}")
raise


Однако если вы захватываете экземпляр исключения, скобки всё равно требуются:
def divide(a, b):
try:
result = a / b
return result
except (ZeroDivisionError, TypeError) as e:
print(f"Ошибка: {e}")
raise e


Хотя это обновление и незначительное, оно упрощает код при работе с несколькими исключениями.

3⃣ Отложенная оценка аннотаций типов

В предыдущих версиях Python ссылаться на класс в аннотациях типов до того, как он был полностью определён, приводило к ошибке NameError. Разработчики должны были использовать строковые литералы или импортировать __future__, чтобы избежать этой проблемы. В Python 3.14 аннотации типов теперь оцениваются только по мере необходимости.

Пример (до Python 3.14):
class Node:
def __init__(self, value: int, next: Node): # Ошибка NameError
self.value = value
self.next = next


Теперь в Python 3.14 нет необходимости в специальных импортируемых модулях или строковых аннотациях:
class Node:
def __init__(self, value: int, next: Node): # Работает без ошибок
self.value = value
self.next = next


Аннотации типов теперь оцениваются только во время выполнения, что делает их использование более простым и чистым.

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/pyproglib/6680
Create:
Last Update:

⌨️ Как адаптировать код под синтаксические изменения в Python 3.14

Python 3.14 планируется к релизу 7 октября 2025 года. В нем будут представлены значительные улучшения производительности, включая новый экспериментальный интерпретатор и оптимизацию различных встроенных модулей.

Кроме того, Python 3.14 вводит несколько изменений синтаксиса, которые важно учитывать разработчикам:

1⃣ Запрещены операторы управления потоком в блоках `finally`

Сейчас разработчики могут по ошибке использовать операторы управления потоком (такие как return, break или continue) в блоках finally, что может привести к неожиданному поведению. В Python 3.14 будет выводиться SyntaxWarning при наличии таких операторов в блоках finally.

Пример:

def return_example():
try:
print("В блоке try")
return "Возврат из блока try"
except Exception as e:
print(f"Ошибка: {e}")
finally:
print("В блоке finally")
return "Возврат из блока finally" # Перекрывает возврат из try

result = return_example()
print(f"Результат: {result}")


Вывод:
В блоке try
В блоке finally
Результат: Возврат из блока finally


Это изменение поможет избежать ошибок, когда контрольный поток блока finally перезаписывает поток из блоков try/except.

2⃣ Обработка исключений без скобок

В Python 3.14 больше не требуется использовать скобки при перехвате нескольких исключений. Это упрощает код, но скобки всё равно необходимы, если вы используете конструкцию as для захвата экземпляра исключения.

Пример:
def divide(a, b):
try:
result = a / b
return result
except ZeroDivisionError, TypeError: # Обработка без скобок
print(f"Неправильный ввод: {a} и {b}")
raise


Однако если вы захватываете экземпляр исключения, скобки всё равно требуются:
def divide(a, b):
try:
result = a / b
return result
except (ZeroDivisionError, TypeError) as e:
print(f"Ошибка: {e}")
raise e


Хотя это обновление и незначительное, оно упрощает код при работе с несколькими исключениями.

3⃣ Отложенная оценка аннотаций типов

В предыдущих версиях Python ссылаться на класс в аннотациях типов до того, как он был полностью определён, приводило к ошибке NameError. Разработчики должны были использовать строковые литералы или импортировать __future__, чтобы избежать этой проблемы. В Python 3.14 аннотации типов теперь оцениваются только по мере необходимости.

Пример (до Python 3.14):
class Node:
def __init__(self, value: int, next: Node): # Ошибка NameError
self.value = value
self.next = next


Теперь в Python 3.14 нет необходимости в специальных импортируемых модулях или строковых аннотациях:
class Node:
def __init__(self, value: int, next: Node): # Работает без ошибок
self.value = value
self.next = next


Аннотации типов теперь оцениваются только во время выполнения, что делает их использование более простым и чистым.

Библиотека питониста #буст

BY Библиотека питониста | Python, Django, Flask




Share with your friend now:
tg-me.com/pyproglib/6680

View MORE
Open in Telegram


Библиотека питониста | Python Django Flask Telegram | DID YOU KNOW?

Date: |

A Telegram spokesman declined to comment on the bond issue or the amount of the debt the company has due. The spokesman said Telegram’s equipment and bandwidth costs are growing because it has consistently posted more than 40% year-to-year growth in users.

The lead from Wall Street offers little clarity as the major averages opened lower on Friday and then bounced back and forth across the unchanged line, finally finishing mixed and little changed.The Dow added 33.18 points or 0.10 percent to finish at 34,798.00, while the NASDAQ eased 4.54 points or 0.03 percent to close at 15,047.70 and the S&P 500 rose 6.50 points or 0.15 percent to end at 4,455.48. For the week, the Dow rose 0.6 percent, the NASDAQ added 0.1 percent and the S&P gained 0.5 percent.The lackluster performance on Wall Street came on uncertainty about the outlook for the markets following recent volatility.

Библиотека питониста | Python Django Flask from ca


Telegram Библиотека питониста | Python, Django, Flask
FROM USA